Server computers often include one or more input/output (I/O) devices. For example, a server computer may include one or more I/O adapter devices for communicating with a network. Each I/O device may communicate over multiple, possibly asynchronous interfaces, such as Peripheral Component Interconnect Express (PCIe) and/or Ethernet. For example, the host server computer may send I/O transactions over a PCIe bus to the I/O adapter device, and the I/O adapter device may send those I/O transactions over an Ethernet cable for processing by another server.
In some instances, one or more virtual machines may be running on the host server computer which can send data over the PCIe bus to the I/O adapter device. For example, the virtual machines may send the data via the I/O adapter device to multiple network destinations for further processing, e.g., storage, data processing and warehousing, archive and many other tasks. In some instances, a virtual machine running on the host server computer may perform data mirroring to send the replicated data to multiple network destinations. For example, the virtual machine may send multiple copies of the same data over the PCIe bus to the I/O adapter device for sending to the multiple network destinations for fault tolerance purposes. Sending each copy of the data over the PCIe bus from the host memory to the I/O adapter device may not only consume lot of bandwidth between the host server computer and the I/O adapter device but may also slow down the performance of the host server computer for other important tasks.